using System;
using System.Collections.Generic;
using System.Text;
using EntidadesTO;
using AccesoDatos;

namespace LogicaNegocio
{
    public class CuentaCorrienteBL
    {
        public void GuardarNuevo(CuentaCorrienteTO pCuentaCorriente)
        {
            CuentaCorrienteDA cuentaCorrienteDA = new CuentaCorrienteDA();
            cuentaCorrienteDA.GuardarNuevo(pCuentaCorriente);
        }

        public void ActualizarAbono(InformacionAbonosTO pInformacionAbonos)
        {
            CuentaCorrienteDA cuentaCorrienteDA = new CuentaCorrienteDA();
            cuentaCorrienteDA.ActualizarAbonos(pInformacionAbonos);
        }

        public List<CuentaCorrienteTO> ListarCuentaCorriente_deuda(int pCodPersona, DateTime pFecha)
        {
            CuentaCorrienteDA cuentaCorrienteDA = new CuentaCorrienteDA();
            return cuentaCorrienteDA.BuscarCuentaCorriente_deuda(pCodPersona, pFecha);
        }

        public List<CuentaCorrienteTO> ListarCuentaCorriente_financiado_deuda(int pCodPersona, DateTime pFecha)
        {
            CuentaCorrienteDA cuentaCorrienteDA = new CuentaCorrienteDA();
            return cuentaCorrienteDA.BuscarCuentaCorriente_financiado_vencido(pCodPersona, pFecha);
        }

        public decimal CalcularCuota(decimal pMontoAutoavaluo)
        {
            ConfiguracionDA configuracionDA = new ConfiguracionDA();
            ConfiguracionTO configuracionTO = configuracionDA.CargarConfiguracion();
            decimal alicuota_aux;
            decimal montoCuota_aux;

            //Se calcula la alicuota
            if (pMontoAutoavaluo <= configuracionTO.MontoLimite1)
                alicuota_aux = configuracionTO.AlicuotaLimite1;
            else if (pMontoAutoavaluo <= configuracionTO.MontoLimite2)
                    alicuota_aux = configuracionTO.AlicuotaLimite2;
                else
                    alicuota_aux = configuracionTO.AlicuotaLimite3;

            //Se obtienen las cuotas trimestrales
            montoCuota_aux = ((alicuota_aux * pMontoAutoavaluo) / 100) / 4;

            return montoCuota_aux;
        }

        public void ActualizarFinanciamiento(int pNumComprobante, int pNumeroSolicitud, DateTime pFecha)
        {
            CuentaCorrienteDA cuentaCorrienteDA = new CuentaCorrienteDA();
            cuentaCorrienteDA.FinanciarCuentaCorriente(pNumComprobante, pNumeroSolicitud, pFecha);
        }
    }
}
